iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
自我挑戰組

leetcode系列 第 13

leetcode 13. Roman to Integer

  • 分享至 

  • xImage
  •  

題目:
https://ithelp.ithome.com.tw/upload/images/20250927/20169340eYdTrh0JJo.png
例如, 2寫成II 羅馬數字,就是兩個一相加。12寫成 XII,就是簡單的X + II。數字27寫成XXVII,就是XX + V + II。

羅馬數字通常從左到右按從大到小的順序書寫。然而,表示四的數字不是IIII。相反,數字四寫作IV。因為一在五之前,所以我們減去一,得到四。同樣的原則也適用於數字九,它寫作IX。減法的使用有六種情況:

I可以放在V(5)和X(10)之前,形成4和9。
X可以放在L(50) 和C(100) 之前,以形成 40 和 90。
C可以放在D(500) 和M(1000) 之前,以形成 400 和 900。
給定一個羅馬數字,將其轉換為整數。
https://ithelp.ithome.com.tw/upload/images/20250927/2016934008wkCODWO2.png
解題思路

建立一個 HashMap 存羅馬字元與數值的對應。

從左到右遍歷字串:

如果當前字元的值 < 下一個字元的值 → 減去它(表示組合成特殊數字)。

否則就直接加上它。

最後得到的結果就是答案。


上一篇
leetcode 12. Integer to Roman
下一篇
leetcode 14. Longest Common Prefix
系列文
leetcode24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言